package exercises.leetcode;

import java.util.HashSet;

/**
 * <a href="https://leetcode-cn.com/problems/contains-duplicate/">
 * 217. 存在重复元素</a>
 *
 * @author or2
 * @Description 给定一个整数数组，判断是否存在重复元素。
 * 如果存在一值在数组中出现至少两次，函数返回 true 。如果数组中每个元素都不相同，则返回 false 。
 * @create 2021年09月19日 时间: 13:55
 */
public class No217 {

    /**
     * 暴力 - 超时
     * @param nums 被检测的数组
     * @return 是否含有重复元素
     */
    public boolean containsDuplicate(int[] nums) {
        for (int i = 0; i < nums.length; i++) {
            int num = nums[i];
            for (int j = i + 1; j < nums.length - i; j++) {
                if (nums[j] == num) {
                    return true;
                }
            }
        }

        return false;
    }

    /**
     * 空间换时间
     * @param nums 被检测的数组
     * @return 是否含有重复元素
     */
    public boolean containsDuplicate2(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        for (int num : nums) {
            if (set.add(num)) {
                continue;
            }

            return true;
        }

        return false;
    }
}
